/* 
 * Enterprise Library Extensions - DI + ORM.
 * Copyright (C) 2006
 *
 * GNU General Public License
 *
 * This program is free software; you can redistribute 
 * it and/or modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 */
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Configuration;
using Oracle.DataAccess.Client;
using System.Data.Common;

namespace ELE.EnterpriseLibrary.Data.Oracle
{

  [DatabaseAssembler(typeof(OracleDatabaseAssembler))]
  public class OracleDatabase : Database
  {
    public OracleDatabase(string connectionString)
      : base(connectionString, OracleClientFactory.Instance)
    {
    }

    protected char ParameterToken
    {
      get { return ':'; }
    }

    protected override int UserParametersStartIndex()
    {
      return 0;
    }
    public override string BuildParameterName(string name)
    {
      if (!string.IsNullOrEmpty(name) && !name.StartsWith(this.ParameterToken.ToString()))
      {
        return name.Insert(0, new string(this.ParameterToken, 1));
      }
      return name;
    }

    protected override void DeriveParameters(DbCommand discoveryCommand)
    {
      OracleCommandBuilder.DeriveParameters((OracleCommand)discoveryCommand);
    }
  }
}
